package chwgigs;

public class J28_PrinterInterface {

	//인터페이스를 사용하지 않은 경우
	//프린터 제조사를 예를 듦
	
	public static void main(String[] args) {
	
		
	HPPrinterDriver h=new HPPrinterDriver();
	h.print();		
	
	CanonPrinterDriver h2=new CanonPrinterDriver();
	h2.print();		
	
	EpsonPrinterDriver h3=new EpsonPrinterDriver();
	h3.print();		
		
	
	// *인터페이스를 이용한 다양성 
	Printable p=new HPPrinterDriver();
	p.print();
	
	p=new CanonPrinterDriver();
	p.print();
	
	p=new EpsonPrinterDriver();
	p.print();
	// 이렇듯 인터페이스는 매우 효율적이다. 			

	}//

}//main 


 class HPPrinter{
	 public void speedPrint(){
		 System.out.println("빠른 출력 속도");
	 }
 }

 class CanonPrinter{
	 public void hyperPrint(){
		System.out.println( "절대 빠른 프린터");
	 }
 }
  class EpsonPrinter{
	  public void nanoPrint(){
		 System.out.println( "눈 깜작 속도");
	  }
  }
// 이렇게 쓸 수 있지만 효츌적이지 못하다 . 그래서 인터페이스를 써야 한다.  
  
  
 
  
  // *불완전한 인터페이스를 밑에 클래스로 완전하게 한다
 
  interface Printable{
	
	  
	  
	  
	  public void print(); // 객체는 다르지만 메소드는 같다. 
  }
 
  class HPPrinterDriver implements Printable{

	@Override
	public void print() {
		System.out.println("빠른 출력 속도");
		
	}
	  
}
  //
  class CanonPrinterDriver implements Printable{

	@Override
	public void print() {
		
		System.out.println( "절대 빠른 프린터");
	}
	  
}//
  class EpsonPrinterDriver implements Printable{

	@Override
	public void print() {
		 System.out.println( "눈 깜작 속도");
		
	}
	  
}//
  
  
  